#include <iostream>
#include <string>
using namespace std;

class Student {
private:
    static int next_id;  // 静态成员变量，用于生成唯一ID
    int id;             // 学生ID
    string name;        // 姓名
    int age;            // 年龄
    float score;        // 成绩
    const char gender;  // 性别（只读成员变量）

public:
    // 构造函数
    Student(string n, int a, float s, char g) 
        : name(n), age(a), score(s), gender(g) {
        id = next_id++; // 分配唯一ID
    }

    // 析构函数
    ~Student() {
        cout << "学生 " << name << " (ID:" << id << ") 已被销毁" << endl;
    }

    // 显示学生信息
    void show() const {
        cout << "ID: " << id 
             << ", 姓名: " << name 
             << ", 年龄: " << age 
             << ", 成绩: " << score 
             << ", 性别: " << gender << endl;
    }

    // 获取ID（封装函数）
    int getId() const {
        return id;
    }

    // 设置ID（封装函数）
    static void setNextId(int new_id) {
        next_id = new_id;
    }

    // 获取性别（封装函数）
    char getGender() const {
        return gender;
    }
};

// 初始化静态成员变量
int Student::next_id = 1;

int main() {
    // 设置起始ID
    Student::setNextId(1001);

    // 创建学生对象
    Student s1("张三", 18, 90.5, 'M');
    Student s2("李四", 19, 85.0, 'F');
    Student s3("王五", 20, 92.5, 'M');

    // 显示学生信息
    s1.show();
    s2.show();
    s3.show();

    // 获取学生信息
    cout << "s1的ID: " << s1.getId() << endl;
    cout << "s2的性别: " << s2.getGender() << endl;

    return 0;
}